package main

import (
	"anqi/testPackage"
	"fmt"
)

//定义接口
type Phone interface {
	call()
}

//定义结构体（类）
type Nokia struct {
}

//实现接口方法
func (nokia Nokia) call() {
	fmt.Println("I`m am Nokia, I can call you !")
}

type IPhone struct {
}

func (iPhone IPhone) call() {
	fmt.Println("I`m am IPhone, I can call you !")
}

//函数
func main() {

	/**
	特别注意：
		可见性规则
			Go语言中，使用大小写来决定该常量、变量、类型、接口、结构或函数是否可以被外部包所调用。
			函数名首字母小写即为 private :
				func getId() {}
			函数名首字母大写即为 public :
				func Printf() {}
	*/
	testPackage.FirtTestFunc()

	var a int = 10

	var b int = 20

	var result int

	result = testPackage.Max(a, b)

	fmt.Println("大哥是：", result)

	testPackage.SecondTestFunc()

	var i int
	fmt.Print("斐波那契数列: ")
	for i = 0; i < 10; i++ {
		fmt.Printf("%d\t", testPackage.Feibonaqie(i))
	}

	fmt.Println()
	var phone Phone

	phone = new(Nokia)
	phone.call()

	phone = new(IPhone)
	phone.call()

}
